home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-ROM Collection / Amiga CD-ROM Collection - Auge 4000 and Cactus and Demo Util.iso / auge4000 / 46 / include / stdio.h < prev    next >
C/C++ Source or Header  |  1990-06-20  |  4KB  |  146 lines

  1.  
  2. /*
  3.  *  STDIO.H
  4.  */
  5.  
  6. #ifndef _STDIO_H
  7. #define _STDIO_H
  8.  
  9. #ifndef _STDDEF_H
  10. #include <stddef.h>
  11. #endif
  12.  
  13. #ifndef _STDARG_H
  14. typedef void *va_list;
  15. #endif
  16.  
  17. typedef long    fpos_t;
  18.  
  19. typedef struct FILE {
  20.     struct FILE *sd_Next;
  21.     struct FILE **sd_Prev;
  22.     unsigned char   *sd_RBuf;
  23.     unsigned char   *sd_RPtr;
  24.     unsigned char   *sd_WBuf;
  25.     unsigned char   *sd_WPtr;
  26.     long    sd_BufSiz;
  27.     int     sd_RLeft;
  28.     int     sd_WLeft;
  29.     int     sd_Flags;
  30.     int     sd_Error;        /*    error: 0 / non-0    */
  31.     fpos_t  sd_Offset;        /*    level 1 current off */
  32.     int     sd_Fd;
  33.     short   sd_UC;        /*    ungotten character or -1    */
  34.     char    *sd_Name;        /*    use for tmpfile()   */
  35. } FILE;
  36.  
  37. typedef struct _IOFDS {
  38.     long    fd_Fh;
  39.     long    fd_Flags;
  40.     long    (*fd_Exec)();   /*  exec function       */
  41.     long    fd_Reserved;
  42. } _IOFDS;
  43.  
  44. extern FILE _Iob[3];            /*    fixed fps        */
  45. extern FILE *_Iod;            /*    dynamic fps        */
  46.  
  47. extern _IOFDS _IoStaticFD[3];        /*    0,1,2            */
  48. extern _IOFDS *_IoFD;            /*    descriptors        */
  49. extern short _IoFDLimit;
  50.  
  51. #define __SIF_ERROR    0x0001    /*  XXX */
  52. #define __SIF_EOF    0x0002
  53. #define __SIF_READ    0x0004
  54. #define __SIF_WRITE    0x0008
  55. #define __SIF_IOLBF    0x0010
  56. #define __SIF_REMOVE    0x0020    /*  unlink file after closing    */
  57. #define __SIF_APPEND    0x0040
  58. #define __SIF_NOFREE    0x0080    /*  not a freeable descriptor    */
  59. #define __SIF_OPEN    0x0100    /*  file is open        */
  60. #define __SIF_MYBUF    0x0200    /*  I allocated the buffer(s)   */
  61. #define __SIF_BINARY    0x0400
  62. #define __SIF_RAW    0x0800    /*  RAW terminal , see setvbuf    */
  63. #define __SIF_FILE    0x1000    /*  a seekable file        */
  64.  
  65. #define _IOFBF    -1
  66. #define _IOLBF    __SIF_IOLBF
  67. #define _IONBF    0
  68.  
  69. #define BUFSIZ    1024
  70. #define EOF    -1
  71. #define FILENAME_MAX    1024
  72. #define FOPEN_MAX    20    /*  lets be reasonable        */
  73. #define L_tmpnam    32
  74. #define SEEK_SET    0
  75. #define SEEK_CUR    1
  76. #define SEEK_END    2
  77. #define TMP_MAX     4096
  78. #define stdin    (&_Iob[0])
  79. #define stdout    (&_Iob[1])
  80. #define stderr    (&_Iob[2])
  81.  
  82. #define clearerr(fi)    (((fi)->sd_Flags &= ~__SIF_EOF), ((fi)->sd_Error = 0))
  83. #define feof(fi)        ((fi)->sd_Flags & __SIF_EOF)
  84. #define ferror(fi)      ((fi)->sd_Error)
  85. #define fileno(fi)      ((fi)->sd_Fd)
  86.  
  87. extern void perror(const char *);
  88.  
  89. extern int    fclose(FILE *);
  90. extern int    fflush(FILE *);
  91. extern FILE * fopen(const char *, const char *);
  92. extern FILE * freopen(const char *, const char *, FILE *);
  93. extern void   setbuf(FILE *, char *);
  94. extern int    setvbuf(FILE *, char *, int, size_t);
  95.  
  96. extern int    remove(const char *);
  97. extern int    rename(const char *, const char *);
  98. extern FILE * tmpfile(void);
  99. extern char * tmpnam(char *);
  100.  
  101. extern int    fgetpos(FILE *, fpos_t *);
  102. extern int    fseek(FILE *, long, int);
  103. extern int    fsetpos(FILE *, const fpos_t *);
  104. extern long   ftell(FILE *);
  105. extern void   rewind(FILE *);
  106.  
  107. extern int    fgetc(FILE *);
  108. extern char * fgets(char *, int, FILE *);
  109. extern int    fputc(int, FILE *);
  110. extern int    fputs(const char *, FILE *);
  111.  
  112. #define getc(fi)   ( ((fi)->sd_UC >= 0) ? fgetc(fi) : ((fi)->sd_RLeft <= 0) ? fgetc(fi) : (--(fi)->sd_RLeft, (int)*(fi)->sd_RPtr++))
  113. #define putc(c,fi) (((c) == '\n' || (fi)->sd_WLeft <= 0) ? fputc((c),(fi)) : (*(fi)->sd_WPtr++ = (c), --(fi)->sd_WLeft, (c)))
  114.  
  115. #define getchar()  fgetc(stdin)
  116. #define putchar(c) fputc((c),stdout)
  117.  
  118. extern char * gets(char *);
  119. extern int    puts(const char *);
  120. extern int    ungetc(int, FILE *);
  121.  
  122. extern size_t fread(void *, size_t, size_t, FILE *);
  123. extern size_t fwrite(const void *, size_t, size_t, FILE *);
  124.  
  125. extern int    fprintf(FILE *, const char *, ...);
  126. extern int    fscanf(FILE *, const char *, ...);
  127. extern int    printf(const char *, ...);
  128. extern int    scanf(const char *, ...);
  129. extern int    sprintf(char *, const char *, ...);
  130. extern int    sscanf(char *, const char *, ...);
  131.  
  132. extern int    vfprintf(FILE *, const char *, va_list);
  133. extern int    vprintf(const char *, va_list);
  134. extern int    vsprintf(char *, const char *, va_list);
  135.  
  136. /*
  137.  *  Standard, but not ANSI
  138.  */
  139.  
  140. extern FILE * fdopen(int, const char *);
  141. extern int    chdir(const char *);
  142. extern char * getcwd(char *, int);
  143.  
  144. #endif
  145.  
  146.